Multipathing is one of numerous technologies that have been developed to provide computer systems with a level of fault tolerance. More specifically, multipathing is used to provide fault tolerance against failure of a data path used to transfer data. Multipathing can be deployed in, for example, a storage area network to ensure that a host can continue to access a data storage device despite the failure of a data path between the host and the data storage device, given the availability of multiple data paths to the data storage device. Multipathing technology is generally most effective when there exists redundant hardware components forming multiple data paths to the data storage device in the Storage Area Network. This is referred to as Hardware High Availability.
To provide fault tolerance against data path failure, multipathing technology manages multiple redundant data paths. Multipathing technology is arranged to detect failure of an active data path used to transfer data and automatically switch to one of the redundant data paths so that transfer of data can continue despite failure of the active data path. The action of detecting the failure of an active data path and switching to one of the redundant data paths is sometimes referred to as “failover”.
Multipathing technology is typically implemented in the form of a driver (that is, a piece of software), which can be installed on a host computer. A disadvantage of this approach is that when existing multipathing drivers are installed on a host computer and are upgraded (that is, replaced with a newer version) they may not provide failover functionality during the upgrade process. Consequently, if the active data path being used to transfer data fails during the upgrade process, the transfer of data will be interrupted until such time as the upgrade process is complete.
Furthermore, existing multipathing drivers are such that the host computer may need to be rebooted subsequent to an upgraded version of the multipathing driver being installed on the host computer. The reboot is typically required to ensure the upgraded driver is properly executed by the host computer. A consequence of rebooting the host computer is that the transfer of data via the active data path will be halted until such time as the host computer has completed the reboot process.